//package com.qdsgjsfk.vision.ui;
//
//import android.Manifest;
//import android.app.Activity;
//import android.app.ProgressDialog;
//import android.bluetooth.BluetoothAdapter;
//import android.bluetooth.BluetoothDevice;
//import android.bluetooth.le.ScanCallback;
//import android.bluetooth.le.ScanResult;
//import android.content.ComponentName;
//import android.content.Intent;
//import android.content.ServiceConnection;
//import android.content.pm.PackageManager;
//import android.graphics.Color;
//import android.os.Build;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.IBinder;
//import android.support.v4.view.ViewCompat;
//import android.support.v7.app.AppCompatActivity;
//import android.support.v7.widget.LinearLayoutManager;
//import android.support.v7.widget.RecyclerView;
//import android.text.TextUtils;
//import android.util.Log;
//import android.view.View;
//import android.view.ViewGroup;
//import android.view.Window;
//import android.view.WindowManager;
//import android.widget.Button;
//import android.widget.ImageView;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.qdsgjsfk.vision.util.BleBlueToothUtils;
//
//import com.qdsgjsfk.vision.R;
//
//import org.greenrobot.eventbus.EventBus;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import jz.joyoung.robot.util.LogUtil;
//import com.qdsgjsfk.vision.eventbus.BlueTooth;
//import com.qdsgjsfk.vision.interfac.BleResultCallBack;
//import com.qdsgjsfk.vision.service.BleBlueToothService;
//
//import util.NetworkUtil;
//
//public class BleBlueToothActivity extends AppCompatActivity {
//    private static final String TAG = "mcy";
//    Button btnDis, btnAbout;
//    ImageView btn_back;
//    RecyclerView lvBTDevices;
//    String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION};
//    List<String> lstDevices = new ArrayList<String>();
//    private final int openBTCode = 100;
//    //---------------低功耗蓝牙----------------
//    private BleBlueToothService.BleBlueToothBind bleBTBind;
//    private ServiceConnection bleConnection;
//    private BluetoothAdapter.LeScanCallback leScanCallback;
//    private ScanCallback scanCallback;
//    private List<BluetoothDevice> devicesList = new ArrayList<>();
//    private String text = "";
//
//
//    private String uuid = "6db14d27-04f1-4df8-98ca-356dfc16ee43";
//    private MyAdapter blueToothListAdapter;
//    private Handler handler = new Handler();
//    private ProgressDialog progressDialog;
//    private boolean isConnection = false;//是否正在连接蓝牙，如果正在练，不连接第二次
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate( savedInstanceState );
//        setContentView( R.layout.main );
//        initView();
//
//
//        //检查权限   >6.0以上版本需要动态的申请定位权限,< 6.0 清单文件声明了即可
//        if (BleBlueToothUtils.checkLocalPermissiion( this, permissions )) {
//            //1. 获取蓝牙适配器
//            BluetoothAdapter blueadapter = BluetoothAdapter.getDefaultAdapter();
//            //2.如果BluetoothAdapter 为null，说明android手机没有蓝牙模块。
//            if (blueadapter == null) {
//                Toast.makeText( BleBlueToothActivity.this, "设备不支持蓝牙", Toast.LENGTH_LONG ).show();
//            } else {
//                //true表示已经开启，false表示蓝牙并没启用。
//                if (blueadapter.isEnabled()) {
//                    initBle();
//                } else {
//                    openBlueSync( BleBlueToothActivity.this, openBTCode );
//                }
//            }
//        }
//
//
//    }
//
//
//    private void initBle() {
//
//        //api<21回调这个借口
//        leScanCallback = new BluetoothAdapter.LeScanCallback() {
//            @Override
//            public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
//
//                if (!TextUtils.isEmpty( device.getName() )) {
//                    if (!devicesList.contains( device )) {
//                        devicesList.add( device );
//                        String str = device.getName() + "|" + device.getAddress();
//                        lstDevices.add( str );
//                        Log.e( "Ble", "扫描到设备-->" + device.getName() );
//                    }
//                    blueToothListAdapter.notifyDataSetChanged();
//                    handler.postDelayed( new Runnable() {
//                        @Override
//                        public void run() {
//                            btnDis.setText( "搜索蓝牙设备" );
//                        }
//
//                    }, 1000 );
//
//                }
//
//
//            }
//        };
//        //api>21回调这个借口
//        scanCallback = new ScanCallback() {
//            @Override
//            public void onScanResult(int callbackType, ScanResult result) {
//                if (!TextUtils.isEmpty( result.getDevice().getName() )) {
//                    if (!devicesList.contains( result.getDevice() )) {
//                        devicesList.add( result.getDevice() );
//                        String str = result.getDevice().getName() + "|" + result.getDevice().getAddress();
//                        lstDevices.add( str );
//                        Log.e( "Ble", "扫描到设备-->" + result.getDevice().getName() + "-----" + result.getDevice().getAddress() );
//
//                    }
//                    blueToothListAdapter.notifyDataSetChanged();
//                    handler.postDelayed( new Runnable() {
//                        @Override
//                        public void run() {
//                            btnDis.setText( "搜索蓝牙设备" );
//                        }
//
//                    }, 1000 );
//
//                }
//            }
//        };
//        bleConnection = new ServiceConnection() {
//            @Override
//            public void onServiceConnected(ComponentName name, IBinder service) {
//                bleBTBind = ((BleBlueToothService.BleBlueToothBind) service);
//                if (bleBTBind.getAdapter() != null) {
//                    //判断蓝牙是否开启
//                    if (!bleBTBind.getAdapter().isEnabled()) {
//                        //打开蓝牙
//                        openBlueSync( BleBlueToothActivity.this, openBTCode );
//                    } else {
//                        //========================开始执行工作=============================
//                        bleBTBind.scanLeDevice( leScanCallback, scanCallback );
//                        bleBTBind.setBleResultCallBack( new BleResultCallBack() {
//                            //连接成功回调
//                            @Override
//                            public void onDiscoverServicesSuccess() {
//                                Log.e( "onDiscoverServices--", "连接成功" );
//                                dismissProgressDialog();
//
//                                handler.postDelayed( new Runnable() {
//                                    @Override
//                                    public void run() {
//                                        Toast.makeText( BleBlueToothActivity.this, "连接成功", Toast.LENGTH_SHORT ).show();
//                                        startActivity( new Intent( BleBlueToothActivity.this, TypeActivity.class ) );
//                                        finish();
//                                    }
//                                }, 500 );
//                            }
//
//                            @Override
//                            public void onDiscoverServicesFail() {
//                                dismissProgressDialog();
//                                isConnection = false;
//                                handler.postDelayed( new Runnable() {
//                                    @Override
//                                    public void run() {
//                                        Toast.makeText( BleBlueToothActivity.this, "连接异常，请靠近验光仪重新连接", Toast.LENGTH_SHORT ).show();
//                                    }
//                                }, 100 );
//                            }
//
//                            //蓝牙返回数据回调
//                            @Override
//                            public void onReturnResult(final String data) {
//                                Log.e( "onReturnResult", "接收数据" + data );
//
//                                handler.postDelayed( new Runnable() {
//                                    @Override
//                                    public void run() {
//                                        if (!TextUtils.isEmpty( data )) {
//                                            Log.e( "蓝牙数据-----", data );
//                                            if (BleBlueToothUtils.getJSONType( data )) {
//                                                //能解析成json
//                                                EventBus.getDefault().postSticky( new BlueTooth( data, 110 ) );
//                                            } else {
//                                                EventBus.getDefault().postSticky( new BlueTooth( data, 1 ) );
//                                            }
//
//
//                                        }
////                                        bleBTBind.cancleConnection();//取消连接
//                                    }
//
//                                }, 1000 );
//
//                            }
//
//
//                        } );
//                    }
//                } else {
//                    Log.e( "mcy", "此设备不支持蓝牙" );
//                }
//
//
//            }
//
//            @Override
//            public void onServiceDisconnected(ComponentName name) {
//                Log.e( "onServiceDisconnected--", "onDestroy" );
//                bleBTBind = null;
//
//            }
//        };
//        ////绑定服务，
//        //    // 第一个参数是intent对象，表面开启的服务。
//        //    // 第二个参数是绑定服务的监听器
//        //    // 第三个参数一般为BIND_AUTO_CREATE常量，表示自动创建bind
//        bindService( new Intent( this, BleBlueToothService.class ), bleConnection, BIND_AUTO_CREATE );
//
//    }
//
//
//    class MyAdapter extends RecyclerView.Adapter<MyAdapter.BlueToothHolder> {
//
//        @Override
//        public MyAdapter.BlueToothHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//            return new BlueToothHolder( getLayoutInflater().inflate( R.layout.item_bluetooth, parent, false ) );
//        }
//
//        @Override
//        public void onBindViewHolder(MyAdapter.BlueToothHolder holder, final int position) {
//
//
//            String str = lstDevices.get( position );
//            if (str == null | str.equals( "" )) {
//
//                return;
//            }
//            final String[] values = str.split( "\\|" );
//            final String address = values[1];
//            holder.tv_name.setText( values[0] );
//            holder.itemView.setOnClickListener( new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    try {
//                        if (!isConnection) {
//                            //连接制定的设备。！！！！！
//                            bleBTBind.connection( BleBlueToothActivity.this, address );
//                            //停止扫描
//                            bleBTBind.stopScan( leScanCallback, scanCallback );
//                            isConnection = true;
//
//                            showProgressDialog();
//                        } else {
//                            Toast.makeText( BleBlueToothActivity.this, "正在连接，请稍后", Toast.LENGTH_SHORT ).show();
//                        }
//
//
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//
//                }
//            } );
//
//        }
//
//        @Override
//        public int getItemCount() {
//            return lstDevices.size();
//        }
//
//        class BlueToothHolder extends RecyclerView.ViewHolder {
//            TextView tv_name;
//            ImageView img, img_vision, img_diopter, img_diagnose;
//
//            View line;
//
//            public BlueToothHolder(View itemView) {
//                super( itemView );
//                tv_name = itemView.findViewById( R.id.tv_name );
//
//                line = itemView.findViewById( R.id.line );
//
//            }
//        }
//
//    }
//
//    // 按钮事件
//    class ClickEvent implements View.OnClickListener {
//        @Override
//        public void onClick(View v) {
//
//            if (v == btnDis) {
//                btnDis.setText( "正在搜索设备..." );
//
//                try {
//                    bleBTBind.stopScan( leScanCallback, scanCallback );
//
//                    devicesList.clear();
//                    lstDevices.clear();
//                    initBle();
//
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//
//            }
//        }
//
//    }
//
//    private void initView() {
//
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//            Window window = this.getWindow();
//            //取消状态栏透明
//            window.clearFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS );
//            //添加Flag把状态栏设为可绘制模式
//            window.addFlags( WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS );
//            //设置状态栏颜色
//            window.setStatusBarColor( Color.parseColor( "#ffffff" ) );
//            //设置系统状态栏处于可见状态
//            getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR );
//
////            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
//            //让view不根据系统窗口来调整自己的布局
//            ViewGroup mContentView = (ViewGroup) window.findViewById( Window.ID_ANDROID_CONTENT );
//            View mChildView = mContentView.getChildAt( 0 );
//            if (mChildView != null) {
//                ViewCompat.setFitsSystemWindows( mChildView, false );
//                ViewCompat.requestApplyInsets( mChildView );
//            }
//        }
//
//        btnDis = (Button) this.findViewById( R.id.btnDis );
//        btn_back = this.findViewById( R.id.btn_back );
//        btnDis.setOnClickListener( new ClickEvent() );
//        btn_back.setOnClickListener( new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                finish();
//            }
//        } );
//        lvBTDevices = (RecyclerView) this.findViewById( R.id.lvDevices );
//        lvBTDevices.setLayoutManager( new LinearLayoutManager( this ) );
//        blueToothListAdapter = new MyAdapter();
//        lvBTDevices.setAdapter( blueToothListAdapter );
//
//        // 这个函数用来设置 Dialog 周围的颜色。系统默认的是半透明的灰色。值设为0则为完全透明。
//        this.getWindow().setDimAmount( 3 );
//        progressDialog = new ProgressDialog( this );
//        //设置进度条风格，风格为圆形，旋转的
//        progressDialog.setProgressStyle(
//                ProgressDialog.STYLE_SPINNER );
//        //设置ProgressDialog 标题
////        progressDialog.setTitle("下载");
//        //设置ProgressDialog 提示信息
//        progressDialog.setMessage( "请稍后..." );
//        //设置ProgressDialog 标题图标
////        progressDialog.setIcon(android.R.drawable.btn_star);
//        //设置ProgressDialog 的进度条是否不明确
//        progressDialog.setIndeterminate( false );
//        //设置ProgressDialog 是否可以按退回按键取消
//        progressDialog.setCancelable( true );
//        progressDialog.setProgressStyle( R.style.loading_dialog );
//    }
//
//    /**
//     * 展示加载框
//     *
//     * @time 2020/4/21 11:16
//     */
//    public void showProgressDialog() {
//        if (NetworkUtil.isNetworkAvailable( this )) {
//
//            // 让ProgressDialog显示
//            progressDialog.show();
//        }
//
//    }
//
//    public void dismissProgressDialog() {
//        if (progressDialog.isShowing()) {
//            progressDialog.dismiss();
////            mHandler.postDelayed( sRunnable, 500 );
//        }
//
//    }
//
//    /**
//     * 权限回调
//     */
//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult( requestCode, resultCode, data );
//        if (requestCode == openBTCode) {
//            initBle();
//        } else if (requestCode == BleBlueToothUtils.open_GPSCode) {
//            if (BleBlueToothUtils.checkGPSIsOpen( this )) {
//                BleBlueToothUtils.checkLocalPermissiion( this, permissions );
//            } else {
//                BleBlueToothUtils.goToOpenGPS( this );
//            }
//        }
//    }
//
//    /**
//     * 权限回调
//     */
//    @Override
//    public final void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
//        super.onRequestPermissionsResult( requestCode, permissions, grantResults );
//        switch (requestCode) {
//            case BleBlueToothUtils.permission_LocationCode://是否打开允许定位权限
//                LogUtil.e( "定位权限---","true" );
//                if (grantResults.length > 0) {
//                    for (int i = 0; i < grantResults.length; i++) {
//                        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
//                            initBle();//初始化低功耗蓝牙
//
//                        }
//                    }
//                }
//                break;
//            case openBTCode://是否打开蓝牙
//
//                break;
//        }
//    }
//
//    /**
//     * 自动打开蓝牙（同步）
//     * 这个方法打开蓝牙会弹出提示
//     * 需要在onActivityResult 方法中判断resultCode == RESULT_OK  true为成功
//     */
//    public void openBlueSync(Activity activity, int requestCode) {
//        Intent startBlueTooth = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE );
//        startActivityForResult( startBlueTooth, requestCode );
//    }
//
//
//    @Override
//    protected void onDestroy() {
//        super.onDestroy();
//        unbindService( bleConnection );
//        Log.e( "BleActivityonDestroy---", "onDestroy" );
//    }
//
//
//}
